home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / MP / kernel_switch / mpy_mips2.f < prev    next >
Encoding:
Text File  |  1994-08-02  |  1.5 KB  |  68 lines

  1. c Copyright (C) 1993, Silicon Graphics, Inc.
  2. c All Rights Reserved.
  3. c
  4.     subroutine mpy_mips2(a,lda,b,ldb,c,ldc,m,n,p,alpha)
  5. c
  6.     implicit double precision(a-h,o-z)
  7.     real*8 alpha,beta
  8.     dimension a(lda,p),b(ldb,n),c(ldc,n)
  9.     integer p
  10. c
  11.     double precision t
  12. c
  13.     do  100 j=1,(n-1),2
  14.         do 50 i=1,(m-3),4
  15.             t00 = c(i,j)
  16.             t10 = c(i+1,j)
  17.             t20 = c(i+2,j)
  18.             t30 = c(i+3,j)
  19.             t01 = c(i,j+1)
  20.             t11 = c(i+1,j+1)
  21.             t21 = c(i+2,j+1)
  22.             t31 = c(i+3,j+1)
  23.             do 30 k=1,p
  24.             t00    = t00    + a(i,k)*b(k,j)
  25.             t01    = t01    + a(i,k)*b(k,j+1)
  26.             t10    = t10    + a(i+1,k)*b(k,j)
  27.             t11    = t11    + a(i+1,k)*b(k,j+1)
  28.             t20    = t20    + a(i+2,k)*b(k,j)
  29.             t21    = t21    + a(i+2,k)*b(k,j+1)
  30.             t30    = t30    + a(i+3,k)*b(k,j)
  31.             t31    = t31    + a(i+3,k)*b(k,j+1)
  32.  30    continue
  33.                         c(i,j) = t00
  34.                         c(i,j+1) = t01
  35.                         c(i+1,j) = t10
  36.                         c(i+1,j+1) = t11
  37.                         c(i+2,j) = t20
  38.                         c(i+2,j+1) = t21
  39.                         c(i+3,j) = t30
  40.                         c(i+3,j+1) = t31
  41.  50    continue
  42.         do 80 i=i,m
  43.         t00 = c(i,j)
  44.         t01 = c(i,j+1)
  45.         do k =1,p
  46.             t00    = t00    + a(i,k)*b(k,j)
  47.             t01    = t01    + a(i,k)*b(k,j+1)
  48.         enddo
  49.         c(i,j) = t00
  50.         c(i,j) = t01
  51.  80     continue
  52.     
  53.  100     continue
  54.  
  55.         do j=j,n
  56.                 do k=1,p
  57.                         t00 = b(k,j)
  58.                         do i=1,m
  59.                                 c(i,j) = c(i,j) + a(i,k)*t00
  60.                         enddo
  61.                 enddo
  62.         enddo
  63.  
  64.  
  65.     return
  66.     end
  67.